오늘은 어제 설계한 구조에서 조금 더 디테일하게 들어가봤다. 지금 codex나 claude code를 써보면 알 수 있듯이 어떤 요청을 하면 그 대화에서 thread가 유지되면서 컨택스트가 유지된다. 근데 만약 일반적인 gpt sdk로 호출하면 매번 한 질문과 답변을 받는 형식이 된다. 이전 대화에 대한 id를 넣거나 내용을 넣어줄 수 있지만 컨택스트 관리 편의성을 생각했을 땐 그것보단 codex sdk써서 thread를 유지하는게 더 낫다고 판단했다. 즉 어느정도의 티키타카가 필요한 역할의 node(developer)에서는 codex sdk를 쓸 예정이다.
그리고 langgraph의 내부 개념에 대해서 좀더 알아보았다.
구조 (정적) Graph: 전체 워크플로우 Subgraph: 팀 단위 (planner, developer) Node: 실행 함수
실행 (동적) Thread 상태를 이어가는 단위 같은 thread면 state 유지 다른 thread면 완전히 분리
Run 실행 호출 1회 invoke, resume마다 생성 같은 thread에 여러 run 가능
Super-step 그래프 내부 실행 단위 병렬 노드는 같은 step 순차 노드는 다른 step checkpoint 생성 기준
관계 Thread > Run > Super-step > Node Thread는 여러 Run을 포함 Run 내부에서 여러 Super-step이 실행됨 Super-step에서 Node들이 실행됨
저장 Checkpoint: super-step마다 저장되는 state 스냅샷 Checkpointer: 저장/복구 시스템